home *** CD-ROM | disk | FTP | other *** search
- #include "bbs.h"
- extern long Startup_Time,Time_limit;
- extern char ReservedName[];
- extern int QuickFlag;
- extern UBYTE ShutDownFlag;
- extern char lang[];
- void CallerIDLog(int opt);
- extern int RingCount;
-
- static void ReserveForUser(void)
- {
- int stat;
- char str[34];
- struct User TUser;
- struct UserKeys TUserkeys;
-
- Redo:
- AEPutStr("\r\nEnter username to reserve for: ");
- stat=LineInput("",str,30,KEYBOARD_TIMEOUT);
- if(stat<0||str[0]=='\0') return;
- stat=ChooseAName(str,&TUser,&TUserkeys,0);
- if(stat<FAILURE) return;
- if(stat==FAILURE) goto Redo;
- strcpy(ReservedName,TUserkeys.UserName);
- }
-
-
- char ID_DATE[20];
- char ID_TIME[20];
- char ID_NMBR[50];
- char ID_NAME[50];
-
-
- static int do_baud(ULONG baudrate)
- {
- Online_Baud = baudrate;
- Online_BaudR = Cmds->OpeningBaud;
-
- IO_Flags[IOFLAG_SER_OUT] = 1;
- IO_Flags[IOFLAG_SCR_OUT] = 1;
-
- if(Cmds->AcLvl[LVL_VARYING_LINK_RATE]==1) SetBaud(baudrate);
- ConPutStr("\014");
- time(&Time_connect);
- return(REMOTE_LOGON);
- }
-
-
-
-
- int CallerID=0;
-
- int Await_Logon(void)
- {
- int stat,ch,c;
- int input;
- int RCount;
- ULONG sig;
- char string[81];
-
- sprintf(string,ctime(&Startup_Time));
- string[strlen(string)-1]='\0';
- StatMessage(48,3,string);
-
- strcpy(ID_DATE,"");
- strcpy(ID_NAME,"");
- strcpy(ID_TIME,"");
- strcpy(ID_NMBR,"");
-
- StatChatFlag();
- SetEnvStat(ENV_AWAITCONNECT);
- strcpy(lang,"txt");
- ClearProtocol();
- DisplayAwaitMsg();
-
- FOREVER {
-
- Time_limit=1800;
- Time_holder=0;
- RCount=RingCount;
-
- if(TrapDoor) goto GO;
- AWAITLOGON=1;
-
- Cycle_The_Display();
- CheckIconifyMsg();
- ServerCmd=0;
- CheckDoorMsg(0);
- AWAITLOGON=0;
-
- if(ServerCmd)
- {
- strcpy(User.Name,"");
- strcpy(User.Location,"");
-
- switch(ServerCmd)
- {
- case SV_RESERVE: if(ReservedName[0]!='\0')
- {
- ReservedName[0]='\0';
- DisplayAwaitMsg();
- SetEnvStat(ENV_AWAITCONNECT);
-
- } else {
-
- IO_Flags[IOFLAG_SER_IN]=0;
- IO_Flags[IOFLAG_SER_OUT]=0;
- IO_Flags[IOFLAG_SCR_OUT]=1;
- IO_Flags[IOFLAG_KBD_IN]=1;
- Time_limit=3600L;
- Whence_The_Logon=LOCAL_LOGON;
- IntDoReset(Sopt->OffHook);
- ConPutStr(" p\014");
- ReserveForUser();
- Reset_System(1);
- IO_Flags[IOFLAG_SER_IN]=1;
- IO_Flags[IOFLAG_SCR_OUT]=0;
- Whence_The_Logon=AWAIT_LOGON;
- strcpy(User.Name,ReservedName);
- strcpy(User.Location,"");
- SetEnvStat(ENV_RESERVE);
- DisplayAwaitMsg();
- }
- break;
- case SV_ACCOUNTS:
- IO_Flags[IOFLAG_SER_IN]=0;
- IO_Flags[IOFLAG_SER_OUT]=0;
- IO_Flags[IOFLAG_SCR_OUT]=1;
- IO_Flags[IOFLAG_KBD_IN]=1;
- IntDoReset(Sopt->OffHook);
- ConPutStr(" p\014");
- Time_limit=3600L;
- Whence_The_Logon=LOCAL_LOGON;
- Edit_Accounts();
- Reset_System(1);
- IO_Flags[IOFLAG_KBD_IN]=1;
- IO_Flags[IOFLAG_SER_IN]=1;
- if(IO_Flags[IOFLAG_FIL_IN])
- {
- IO_Flags[IOFLAG_FIL_IN]=0;
- }
- IO_Flags[IOFLAG_SCR_OUT]=0;
- IO_Flags[IOFLAG_SER_OUT]=0;
- Whence_The_Logon=AWAIT_LOGON;
- SetEnvStat(ENV_AWAITCONNECT);
- DisplayAwaitMsg();
- break;
- case SV_NODEOFFHOOK: /* F10 - Exit Off Hook */
- IntDoReset(Sopt->OffHook);
- Delay(30L);
- ShutDown("!"); break;
- case SV_EXITNODE: /* F9 - Exit On Hook */
- Delay(30L);ShutDown("!"); break;
- case SV_AESHELL:
- SetEnvStat(ENV_AWAITCONNECT); break;
- case SV_INSTANT: goto GO; break;
-
- default: return(ServerCmd);
- }
-
- }
-
-
-
- Delay(30L);
-
- CheckRexxMessage();
- if(ShutDownFlag) return(SUSPEND_LOGON);
-
- if(CheckCon()) {
- strcpy(User.Name,""); strcpy(User.Location,"");
- c=GetConKey(1L);
- if(c==155) {
- ch=GetConKey(1L);
- c=GetConKey(1L);
- if(c==126) {
- switch(ch) {
- case '?': /* Help - ToggleStat */
- ToggleStatusDisplay();
- break;
- case '9': /* F10 - Exit Off Hook */
- IntDoReset(Sopt->OffHook);
- Delay(30L);
- ShutDown("!");
- case '8': /* F9 - Exit On Hook */
- ShutDown("!");
- case '7': /* F8 - Reprogram modem */
- ReInitModem();
- Reset_System(1);
- continue;
- case '6': /* F7 - Toggle Chat Bit */
- if(SySChat==1) SySChat=0;
- else SySChat=1;
- StatChatFlag();
- break;
- case '5': /* F6 - Account Editting */
- IO_Flags[IOFLAG_SER_IN]=0;
- IO_Flags[IOFLAG_SER_OUT]=0;
- IO_Flags[IOFLAG_SCR_OUT]=1;
- IO_Flags[IOFLAG_KBD_IN]=1;
- IntDoReset(Sopt->OffHook);
- ConPutStr(" p\014");
- Time_limit=3600L;
- Whence_The_Logon=LOCAL_LOGON;
- Load_Account(1,&User,&User_keys);
- Edit_Accounts();
- Reset_System(1);
- IO_Flags[IOFLAG_KBD_IN]=1;
- IO_Flags[IOFLAG_SER_IN]=1;
- if(IO_Flags[IOFLAG_FIL_IN])
- IO_Flags[IOFLAG_FIL_IN]=0;
- IO_Flags[IOFLAG_SCR_OUT]=0;
- IO_Flags[IOFLAG_SER_OUT]=0;
- Whence_The_Logon=AWAIT_LOGON;
- SetEnvStat(ENV_AWAITCONNECT);
- DisplayAwaitMsg();
- continue;
- // case '4': /* F5 - Local Shell */
- // (void)LRemoteShell();
- // break;
- case '3':
- if(ReservedName[0]!='\0') {
- ReservedName[0]='\0';
- DisplayAwaitMsg();
- } else {
- IO_Flags[IOFLAG_SER_IN]=0;
- IO_Flags[IOFLAG_SER_OUT]=0;
- IO_Flags[IOFLAG_SCR_OUT]=1;
- IO_Flags[IOFLAG_KBD_IN]=1;
- Time_limit=3600L;
- Whence_The_Logon=LOCAL_LOGON;
- IntDoReset(Sopt->OffHook);
- ConPutStr(" p\014");
- ReserveForUser();
- Reset_System(1);
- IO_Flags[IOFLAG_SER_IN]=1;
- IO_Flags[IOFLAG_SCR_OUT]=0;
- Whence_The_Logon=AWAIT_LOGON;
-
- DisplayAwaitMsg();
- }
- continue;
- case '2': /* F3 - Instant Remote Logon */
- goto GO;
- case '1': /* F2 - Local Login */
- strcpy(ConnectString,"F2_LOCAL");
- (void)StatClearTime();
- IO_Flags[IOFLAG_SER_IN]=0;
- IO_Flags[IOFLAG_SER_OUT]=0;
- IO_Flags[IOFLAG_SCR_OUT]=1;
- IO_Flags[IOFLAG_KBD_IN]=1;
- ConPutStr(" p\014");
- time(&Time_connect);
-
- Online_Baud=Cmds->OpeningBaud;
- Online_BaudR=Cmds->OpeningBaud;
- IntDoReset(Sopt->OffHook);
- return(LOCAL_LOGON);
- case '0': /* F1 - Sysop Login */
- strcpy(ConnectString,"SYSOP_LOCAL");
- (void)StatClearTime();
- IO_Flags[IOFLAG_SER_IN]=0;
- IO_Flags[IOFLAG_SER_OUT]=0;
- IO_Flags[IOFLAG_SCR_OUT]=1;
- IO_Flags[IOFLAG_KBD_IN]=1;
- AnsiColor=1;
- QuickFlag=1;
- ConPutStr(" p\014");
- time(&Time_connect);
- Online_Baud=Cmds->OpeningBaud;
- Online_BaudR=Cmds->OpeningBaud;
-
- IntDoReset(Sopt->OffHook);
- return(SYSOP_LOGON);
- } /* end switch */
- } /* end if ch=126 */
- } /* end if c==125 */
- } /* end if CheckCon() */
-
-
-
- if(CheckSer())
- {
- strcpy(User.Name,"");
- strcpy(User.Location,"");
- IO_Flags[IOFLAG_SER_IN]=1;
- IO_Flags[IOFLAG_SER_OUT]=0;
-
-
- if(!(strcmp(Cmds->SerDev,"nullmodem.device")))
- {
- SerPutStr("\r");
- strcpy(string,"CONNECT 19200");
- goto KEWL;
- }
-
- while(RCount)
- {
- LineInput("",string,80,5L);
- if((stat=StringCompare(string,Cmds->MRing))==FAILURE) break;
- RCount -=1;
- }
-
- if(RCount) continue;
-
-
- if(Sopt->Toggles[15] || Sopt->Toggles[16])
- {
- LineInput("",ID_DATE,14,5L);
- LineInput("",ID_DATE,14,5L);
- LineInput("",ID_TIME,14,5L);
- LineInput("",ID_NMBR,40,5L);
- if(Sopt->Toggles[16]) LineInput("",ID_NAME,40,5L);
- CallerIDLog(1);
- }
-
- /* OTHERWISE EQUAL, ANSWER AND SET BAUDS */
-
- GO:
- StatClearTime();
-
- IO_Flags[IOFLAG_SER_IN]=1;
- IO_Flags[IOFLAG_SER_OUT]=0;
-
- if(!TrapDoor)
- {
-
- SerPutStr(Cmds->MAnswer);
- SerPutChar("\r");
- input=LineInput("",string,80,40L);
- if(input==TIMEOUT) goto Timedout;
- input=LineInput("",string,80,40L);
-
- } else {
-
- strcpy(string,TrapConnect);
- }
-
- KEWL:
- strcpy(ConnectString,string);
-
- if(!TrapDoor)
- {
- if(input==TIMEOUT) goto Timedout;
- }
-
- if(!strnicmp(string,"CONNECT ",8)) return(do_baud(atol(&string[8])));
-
- Online_Baud=Online_BaudR;
- SetEnvStat(ENV_AWAITCONNECT);
-
- goto Timedout;
-
- } else {
-
- continue;
-
- }
-
-
- /* ELSE RESET, PURGE AND CONTINUE THE LOOP */
- Timedout:
- DropDTR();
- Delay(25L);
-
- if(Cmds->AcLvl[LVL_VARYING_LINK_RATE]==1)
- {
- SetBaud(Cmds->OpeningBaud);
- Delay(25L);
- }
- IntDoReset(Cmds->MReset);
- SerPutChar("\r");
- Delay(25L);
- PurgeLine();
- }
-
- return(SUCCESS);
- }
-
-
- void Server(int Code)
- {
- switch(Code)
- {
- case SV_SYSOPLOG:
- strcpy(ConnectString,"SYSOP_LOCAL");
- (void)StatClearTime();
- IO_Flags[IOFLAG_SER_IN]=0;
- IO_Flags[IOFLAG_SER_OUT]=0;
- IO_Flags[IOFLAG_SCR_OUT]=1;
- IO_Flags[IOFLAG_KBD_IN]=1;
- AnsiColor=1;
- QuickFlag=1;
- ConPutStr(" p\014");
- time(&Time_connect);
- Online_Baud=Cmds->OpeningBaud;
- Online_BaudR=Cmds->OpeningBaud;
- IntDoReset(Sopt->OffHook);
- ServerCmd=SYSOP_LOGON;
- break;
- case SV_LOCALLOG:
- strcpy(ConnectString,"F2_LOCAL");
-
- (void)StatClearTime();
- IO_Flags[IOFLAG_SER_IN]=0;
- IO_Flags[IOFLAG_SER_OUT]=0;
- IO_Flags[IOFLAG_SCR_OUT]=1;
- IO_Flags[IOFLAG_KBD_IN]=1;
- ConPutStr(" p\014");
- time(&Time_connect);
- Online_Baud=Cmds->OpeningBaud;
- Online_BaudR=Cmds->OpeningBaud;
- IntDoReset(Sopt->OffHook);
- ServerCmd=LOCAL_LOGON;
- break;
- case SV_ACCOUNTS:
- ServerCmd=SV_ACCOUNTS; break;
- case SV_CHAT:
- ServerCmd=SV_CHAT; break;
- case SV_EXITNODE:
- ServerCmd=SV_EXITNODE; break;
- case SV_NODEOFFHOOK:
- ServerCmd=SV_NODEOFFHOOK; break;
- case SV_INITMODEM:
- ServerCmd=0;ReInitModem();Reset_System(0);IO_Flags[IOFLAG_KBD_IN]=0;IO_Flags[IOFLAG_SCR_OUT]=0;break;
- case SV_INSTANT:
- ServerCmd=SV_INSTANT; break;
- case SV_RESERVE:
- ServerCmd=SV_RESERVE; break;
- case SV_CHATTOGGLE:
- ServerCmd=0; if(SySChat) SySChat=0; else SySChat=1;
- StatChatFlag();
- break;
- case SV_QUIETNODE:
- ServerCmd=0; if(QuietNode) QuietNode=0; else QuietNode=1;
- SendQuietFlag(QuietNode); break;
- case SV_AESHELL:
- ServerCmd=SV_AESHELL; break;
- }
- }
-
-